package kelihua

/**
  * 克里化demo
  */
object  kelihuaImplicit{
  implicit  val z:Int = 50
}

object kelihuaDemo {

  /**
    * 1)首先去全局里面去找，如果找到了就用全局里面的那个变量
    * 2）如果找不到就到局部去找
    *
    * 找到到一直 唯一能匹配上 注意如果有两个全局变量一定会报错  因为 它不知道该怎么办了
    *
    */
  def k1(x: Int)(implicit y: Int = 10): Int = {
    x + y
  }

  def main(args: Array[String]): Unit = {
    //  两个小括号就是柯里化
    val fullValue = k1(10)(1)
    println(fullValue) // 10+1 = 11
    val defLocalValue11 = k1(10)
    println(defLocalValue11) // 10+10 = 20
    val defLocalValue12 = k1(10)()
    println(defLocalValue12) // 10+10 = 20

    import kelihuaImplicit.z
    val globalValue = k1(30)
    println(globalValue) // 30+50 = 80


  }

}
